#ifndef __LOG_IN_H__
#define __LOG_IN_H__
#include "head.h"

// 定义一个用户结构体
typedef struct user_info
{
    char user_name[24];         // 用户名
    char user_password[24];    // 用户密码
    int  grade;               // 用户成绩
    char level;              //  用户等级
    int  rank;              //   用户排名
} user; // 用户结构体重命名为user

// 登陆函数
/*
函数名 login
参数
    struct_arr      结构体数组首地址
    lenth           结构体数组长度
返回值
    无
功能
    实现登陆功能
        用户通过输入 账号密码 本函数进行判断
        如果3次错误 则等待 3s 然后重新输入
        直到输入正确 然后退出
*/
void login(user* struct_arr, int lenth);

// 打印进度条函数
/*
函数名 progress_bar
参数
    @seconds     进度条显示的时间
返回值
    无
功能
    打印进度条
*/
void progress_bar(int seconds); 


// 限制用户输入用户名和密码函数(限制用户输入次数)
/*
函数名 juge_in_times
参数
    @num1   用户名输入次数
    @num2   密码输入次数
返回值
    无
功能
    限制用户输入次数，用户名和密码累计输错三次则打印进度条
*/
void juge_in_times(int* num1,int* num2);

//显示菜单的函数
void menu();

//猜数字小游戏
/*
函数名 guess_number
参数
    无
返回值
    无
功能
    实现猜数字小游戏的功能，用户输入1-100之间的数字进行猜测，根据提示继续输入直到猜对为止。
*/
void guess_number();


//可控金字塔游戏
/*
函数名 pyramid
参数
    无
返回值
    无
功能
    实现可控金字塔游戏的功能，用户输入金字塔的层数，程序打印出相应层数的金字塔。
*/
void pyramid();
//打印*
/*
函数名 print_x
参数
    @num   打印*的数量
返回值
    无
功能
    打印指定数量的*符号。
*/
void print_x(int num);
//打印空格
/*
函数名 print_k
参数
    @num   打印空格的数量
返回值
    无
功能
    打印指定数量的空格。
*/
void print_k(int num);


// 打印用户信息
/*
函数名 print_users_info
参数
    @struct_arr 用户信息数组
    @lenth     数组长度
返回值
    无
功能
    打印用户的信息，包括姓名、成绩、等级和排名。
*/
void print_users_info(user *struct_arr, int lenth);


// 随机生成学生成绩
/*
函数名 make_grades
参数
    @struct_arr 用户信息数组
    @lenth     数组长度
返回值
    无
功能
    随机生成学生的成绩，并打印学生信息，然后提供对学生成绩的操作选项，如排等级、排序等。
*/
void make_grades(user *struct_arr, int lenth);

//根据学生成绩排等级
/*
函数名 level_grade
参数
    @struct_arr 用户信息数组
    @lenth     数组长度
返回值
    无
功能
    根据学生的成绩给学生分级，并更新学生的等级字段。
*/
void level_grade(user *struct_arr, int lenth);

// 根据学生成绩排序
/*
函数名 rank_grade
参数
    @struct_arr 用户信息数组
    @lenth     数组长度
返回值
    无
功能
    对学生的成绩进行排序，并更新学生的排名字段。
*/
void rank_grade(user *struct_arr, int lenth);


#endif
